package conan.dataSource;

import conan.DomainLayer.Medarbejder;

import java.sql.Connection;
import java.sql.PreparedStatement;

import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.ArrayList;

public class MedarbejderMapper {
    public boolean insertMedarbejder(ArrayList<Medarbejder> ml, 
                                     Connection conn) throws SQLException {
        int rowsInserted = 0;
        String SQLString = "insert into medarbejder values (?, ?, ?)";
        PreparedStatement statement = null;

        statement = conn.prepareStatement(SQLString);

        for (int i = 0; i < ml.size(); i++) {
            Medarbejder m = ml.get(i);
            statement.setString(2, m.getNavn());
            statement.setInt(1, m.getMedarbejdernr());
            statement.setInt(3, m.getStillingsid());
            rowsInserted += statement.executeUpdate();
        }

        return (rowsInserted == ml.size());
    }

    public boolean updateMedarbejder(ArrayList<Medarbejder> ml, 
                                     Connection conn) throws SQLException {
        int rowsUpdated = 0;
        String SQLString = 
            "update medarbejder" + "set navn = ?" + "where mid = ?";
        PreparedStatement statement = null;

        statement = conn.prepareStatement(SQLString);
        for (int i = 0; i < ml.size(); i++) {
            Medarbejder m = ml.get(i);
            statement.setInt(2, m.getMedarbejdernr());
            statement.setString(1, m.getNavn());
            rowsUpdated += statement.executeUpdate();
        }

        return (rowsUpdated == ml.size());
    }

    public Medarbejder getMedarbejder(int medarbejdernr, Connection conn) {
        Medarbejder m = null;
        String SQLString1 = 
            "select * " + "from medarbejder " + "where mid = ?";
        PreparedStatement statement = null;

        try {
            statement = conn.prepareStatement(SQLString1);
            statement.setInt(1, medarbejdernr);
            ResultSet rs = statement.executeQuery();
            if (rs.next()) {
                m = 
  new Medarbejder(rs.getString(2), medarbejdernr, rs.getInt(3));
            }
        } catch (Exception e) {
            System.out.println("Fail in MedarbejderMapper - getMedarbejder");
            System.out.println(e.getMessage());
        }
        return m;
    }
}
